/*

	IKernelComponent.h
	
	Definition of the IKernelComponent interface
	used for defining objects with behaviour
	similar to the actual game kernel. Can be
	added directly to a list of game components.
	
	Written by Sigurd Suhm 2009

*/

#ifndef _IKERNELCOMPONENT_H
#define _IKERNELCOMPONENT_H

namespace EraAstral
{
	class IKernelComponent
	{
		private:
			// Indicates if the game component contains draw logic
			bool	m_isDrawable;
	
		public:
			// Base constructor
			IKernelComponent(bool isDrawable)
			{
				m_isDrawable = isDrawable;
			}
			// Base virtual destructor
			virtual ~IKernelComponent() {};
			
			// Update method
			virtual void	Update(unsigned int ticks) = 0;
			// Draw logic
			virtual void 	Draw() {};
			
			// Accessors
			bool	IsDrawable() const
			{
				return m_isDrawable;
			}
	};
}

#endif		// _IKERNELCOMPONENT_H
